using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FiltronASP.Models.DAO.Interfaces;
using System.Web.Mvc;

namespace FiltronASP.Models.DAO.Extensions
{
    /// <summary>
    /// Klasa zawierajaca rozszerzenia metod zwiazanych z tabela uzytkownikow.
    /// </summary>
    public static class UserExtensions
    {

        /// <summary>
        /// Metoda do sprawdzania czy uzytkownik ma dostep do uprawnien.
        /// </summary>
        /// <param name="user">uzytkownik</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool IsPermissionAccessChecked(this User user) 
        {
            if (user == null)
            {
                return false;
            }   //if
            if (!user.user_permission_access.HasValue)
            {
                return false;
            }   //if
            return (user.user_permission_access.Value);
        }

        /// <summary>
        /// Metoda do sprawdzania czy wersja jezykowa jest dostepna dla uzytkownika.
        /// </summary>
        /// <param name="user">uzytkownik</param>
        /// <param name="language">jezyk</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool IsUserLanguageChecked(this User user, Language language)
        {
            if (user == null)
            {
                return false;
            }   //if
            if (language == null)
            {
                return false;
            }   //if
            IUserLanguageDAO userLanguageDAO = new UserLanguageDAO();
            return (userLanguageDAO.FindByUserIdAndLanguageId(user.user_id, language.language_id) != null);
        }

        /// <summary>
        /// Metoda do sprawdzania czy grupa stron jest dostepna dla uzytkownika.
        /// </summary>
        /// <param name="user">uzytkownik</param>
        /// <param name="pageType">grupa stron</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool IsUserPageTypeChecked(this User user, PageType pageType)
        {
            if (user == null)
            {
                return false;
            }   //if
            if (pageType == null)
            {
                return false;
            }   //if
            IUserPageTypeDAO userPageTypeDAO = new UserPageTypeDAO();
            return (userPageTypeDAO.FindByUserIdAndPageTypeId(user.user_id, pageType.page_type_id) != null);
        }

    }
}
